﻿#include "CJson.h"
namespace cjson {
	QJsonObject stringToJson(const QString jsonString)
	{
		QJsonObject obj;
		if (jsonString.isEmpty()) {
			return obj;
		}
		QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonString.toUtf8());
		if (jsonDocument.isNull()) {
			return obj;
		}
		obj = jsonDocument.object();
		return obj;
	}

	QJsonArray stringToArry(const QString jsonString)
	{
		QJsonArray arry;
		if (jsonString.isEmpty()) {
			return arry;
		}
		QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonString.toUtf8());
		if (jsonDocument.isNull()) {
			return arry;
		}
		arry = jsonDocument.array();
		return arry;
	}
	QString jsonToString(const QJsonObject& jsonObj)
	{
		return QString(QJsonDocument(jsonObj).toJson());
	}

	std::string jsonFormatOutput(QString qsJsonData)
	{
		if (qsJsonData.isEmpty()) {
			return "null";
		}
		QJsonObject tmpJson = stringToJson(qsJsonData);
		if (tmpJson.isEmpty()) {
			return "null";
		}
		return jsonToString(tmpJson).toStdString();
	}

	QString qs2B64(QString qs1) {
		QByteArray ba;
		ba = qs1.toUtf8();
		ba = ba.toBase64();
		char* cx = ba.data();
		QString b64qs1 = QString(cx);
		return b64qs1;
	}

	QString b64ToQs(QString b64qs1) {//ok
		QByteArray ba;
		std::string stdStr = b64qs1.toStdString();//std::string
		ba = QByteArray(stdStr.c_str());           //QByteArray
		ba = ba.fromBase64(ba);                     //unBase64
		QString qs1 = QString::fromUtf8(ba);        //QString
		return  qs1;
	}

};
